/*
 * File:   IPart.h
 * Author: Elevator
 *
 * Created on 12 Май 2013 г., 16:44
 */

#ifndef PART_H
#define PART_H

#include <string>
#include "Common/Common.h"
#include "IPart.h"
#include "Action.h"
#include "Command.h"
#include "Rule.h"

class Part : public IPart
{
public:
	Part( std::string id );

	virtual void ProcessCommand( const Command& command );
	virtual std::string GetId( ) const;

	void AddRule( const Rule& rule );
	void RemoveRule( const Rule& rule );

	virtual void PerformAction( const Action& action ) = 0;

private:
	Vector<Rule> _rules;
	std::string _id;
};

#endif	/* PART_H */
